(開場:貝老闆興奮地衝進辦公室,手上揮著筆電)
貝老闆:小可小可!我昨天請 AI 幫我們跟 GCP 的 Gemini API 串接,現在我們系統也要有 AI 功能啦!
小可(抬頭,眉頭一皺):你…API Key 放哪?
貝老闆:我看 AI 有幫我產生
.env
環境檔啊,然後我就通通上傳到 GitHub 了,超方便的~(手機突然震動,螢幕顯示「Github Security Alert: API Key Leaked!」)
小可(白眼+拍桌):你是想讓駭客幫你訓練模型嗎?!
(十分鐘後,兩人正透過視訊找好威求救)
好威(皺眉):齁~這是新手經典雷包。你雖然有用
.env
,但直接把它 commit 上 GitHub 公開 repo,等於把金鑰掛在大門口,爬蟲秒抓走。貝老闆:可是…AI 說這樣就可以用了啊…
好威:AI 只負責「讓它能跑」,不負責「讓它安全」,你有叫他提供安全的使用建議嗎?現在你得重發 Key、下架 repo,還得寫報告給客戶。
小可:我馬上幫你把 repo 下掉,改成用雲端 Secrets Manager!
【好威解析】
好威:所謂 Secrets,就是像 API Key、資料庫密碼、Token 這類敏感資訊,千萬不能上傳到版本庫。就算用 .env
,只要沒設定 .gitignore
,一樣會外流。
安全做法是用 環境變數(Environment Variables) 或 Secrets Manager(像 GCP Secret Manager、AWS Secrets Manager、Vault),讓程式在執行時才讀取,確保關鍵資訊不會出現在程式碼本體中。
【概念拆解】
Secrets 外洩風險:把 API Key 寫在程式碼又公開上傳,就像把家門鑰匙釘在門口公告欄,任何人都能拿走。傳統上,工程師會用版本控制規則(.gitignore)與安全掃描工具來防止外洩。和 AI 協作時,你必須主動告訴它「不要把 API Key 或密碼直接寫在程式裡」,並要求它示範如何讀取外部設定。如果不懂,可以問 AI:「我有一組 API Key,要怎麼安全地讓程式使用,又不會被上傳到 GitHub?」
環境變數優勢:環境變數就像把鑰匙鎖在家裡的保險箱裡,只有你需要時才拿出來用。傳統開發中,會在伺服器或本機設定環境變數,程式啟動時再讀取。和 AI 協作時,要請它「建立 .env.example 範例檔,並寫程式讀取這些變數」,不要放真實 Key。如果不懂,可以問 AI:「幫我建立一個用 .env 檔讀取 API Key 的範例,並確保它不會被上傳到 GitHub。」
CI/CD 保護:自動化部署工具像 GitHub Actions、GitLab CI 都有內建 Secrets 功能,可以安全地將 Key 傳給程式而不寫進檔案。傳統團隊會在部署環境中設定這些 Secrets。和 AI 協作時,你可以問它:「幫我在 GitHub Actions 中設定 Secrets 並在部署時讀取」,AI 會給你範例流程。不要假設 AI 會自動替你這麼做,因為它預設只會讓功能能跑。
AI 協作提醒:AI 會依你指示生成程式碼,但它不會自動替你考慮安全策略,除非你明講。傳統上,安全是工程師的職責;在 AI 時代,這變成使用者必須在 Prompt 裡明確要求的部分。對於小白來說,可以直接問 AI:「請用安全的方式處理 API Key,並告訴我它存在哪裡、為什麼安全。」這樣才能確保你得到的是「能用又安全」的解法。
【Takeaways】
API Key 外洩 = 公開發鑰匙:不管多急,都不要把 Key 放在公開程式碼裡。和 AI 協作時,開頭就要說明「請不要把 Key 寫死在程式裡,也不要上傳」。
環境變數 = 鑰匙保險箱:用環境變數或 Secrets Manager 管理 Key 才安全。和 AI 協作時,請它產生 .env.example 並教你如何設定。
部署流程也要防護:CI/CD 工具的 Secrets 功能能避免 Key 被硬寫進檔案。AI 可以幫你寫部署腳本,但要先明講「請用 Secrets 注入」。
AI 不是安全專家:AI 不會主動幫你上鎖,要靠你問對問題。對小白來說,可以問:「這段程式碼有安全風險嗎?有的話幫我改成安全版本。」
【今日提問】
如果 AI 幫你生成程式碼,卻把 .env 連同 Key 一起上傳,你會怎麼處理?